

package com.mt.common.system.controller;

import com.mt.common.core.annotation.ApiPageParam;
import com.mt.common.core.web.base.PageDTO;
import com.mt.common.core.web.base.PageResultDTO;
import com.mt.common.system.dto.system.ScheduledTaskLogEditDto;
import com.mt.common.system.entity.ScheduledTaskLog;
import com.mt.common.system.service.ScheduledTaskLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Api(tags = "定时任务记录")
@RestController
@RequestMapping("/api/system/scheduledTask/ScheduledTaskLog")
@CrossOrigin(allowCredentials = "true")
public class ScheduledTaskLogController {
private static Logger logger = LoggerFactory.getLogger(ScheduledTaskLogController.class);



																																																						@Autowired private ScheduledTaskLogService scheduledTaskLogService;
	
	/**
	* 根据分页参数查询定时任务记录集合
	*
	* @param pageDTO 分页条件
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:view')")
	@ApiOperation("分页查询定时任务记录")
	@ApiPageParam
	@PostMapping("/findScheduledTaskLogs")
	public PageResultDTO findScheduledTaskLogs(@RequestBody PageDTO pageDTO){
		return this.scheduledTaskLogService.findScheduledTaskLogs(pageDTO);
	}

	/**
	* 根据ID查询指定的定时任务记录
	*
	* @param scheduledTaskLogId Id
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:view')")
	@ApiOperation("根据id查询定时任务记录")
	@ApiPageParam
	@PostMapping("/findScheduledTaskLog")
	public ScheduledTaskLog findScheduledTaskLog(@RequestParam Long scheduledTaskLogId){
		return this.scheduledTaskLogService.findScheduledTaskLog(scheduledTaskLogId);
	}

	/**
	* 根据ID查询指定的定时任务记录(包含外键名称)
	*
	* @param scheduledTaskLogId Id
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:view')")
	@ApiOperation("根据ID查询指定的定时任务记录(包含外键名称)")
	@PostMapping("/findScheduledTaskLogForView")
	public ScheduledTaskLog findScheduledTaskLogForView(@RequestParam Long scheduledTaskLogId){
		return this.scheduledTaskLogService.findScheduledTaskLogWithForeignName(scheduledTaskLogId);
	}

	/**
	* 根据ID查询指定的定时任务记录(包含定时任务记录和外键名称)
	*
	* @param scheduledTaskLogId Id
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:view')")
	@ApiOperation("根据ID查询指定的定时任务记录(包含定时任务记录和外键名称)")
	@PostMapping("/findScheduledTaskLogForEdit")
	public ScheduledTaskLogEditDto findScheduledTaskLogForEdit(@RequestParam Long scheduledTaskLogId){
				ScheduledTaskLogEditDto scheduledTaskLogEditDto = new ScheduledTaskLogEditDto();
		scheduledTaskLogEditDto.setScheduledTaskLog(this.scheduledTaskLogService.findScheduledTaskLogWithForeignName(scheduledTaskLogId));

		this.prepareScheduledTaskLogEditDto(scheduledTaskLogEditDto);

		return scheduledTaskLogEditDto;
	}

	/**
	* 根据ID查询指定的定时任务记录(只提取ID 和 Name)
	*
	* @param scheduledTaskLogId Id
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:view')")
	@ApiOperation("根据ID查询指定的定时任务记录(只提取ID 和 Name)")
	@PostMapping("/findScheduledTaskLogsWithIdNameById")
	public ScheduledTaskLog findScheduledTaskLogsWithIdNameById(@RequestParam Long scheduledTaskLogId){
	return this.scheduledTaskLogService.findScheduledTaskLogsWithIdNameById(scheduledTaskLogId);
	}

	/**
	* 根据名称查询定时任务记录集合(只提取ID 和 Name)
	*
	* @param scheduledTaskLogName 名称
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:view')")
	@ApiOperation("根据名称查询定时任务记录集合(只提取ID 和 Name)")
	@PostMapping("/findScheduledTaskLogsWithIdNameByName")
	public List<ScheduledTaskLog> findScheduledTaskLogsWithIdNameByName(@RequestParam String scheduledTaskLogName){
	return this.scheduledTaskLogService.findScheduledTaskLogsWithIdNameByName(scheduledTaskLogName);
	}


	/**
	* 创建新的定时任务记录
	*
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:add')")
	@ApiOperation("创建新的定时任务记录")
	@PostMapping("/createScheduledTaskLog")
	public ScheduledTaskLogEditDto createScheduledTaskLog(){
				ScheduledTaskLogEditDto scheduledTaskLogEditDto = new ScheduledTaskLogEditDto();
		scheduledTaskLogEditDto.setScheduledTaskLog(new ScheduledTaskLog());

		this.prepareScheduledTaskLogEditDto(scheduledTaskLogEditDto);
		return scheduledTaskLogEditDto;
	}

	private void prepareScheduledTaskLogEditDto(ScheduledTaskLogEditDto scheduledTaskLogEditDto){
																																																					}

	/**
	* 新增保存定时任务记录
	*
	* @param scheduledTaskLog 实体对象
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:add')")
	@ApiOperation("新增保存定时任务记录")
	@PostMapping("/saveScheduledTaskLog")
	public ScheduledTaskLog saveScheduledTaskLog(@RequestBody ScheduledTaskLog scheduledTaskLog){
		return this.scheduledTaskLogService.saveScheduledTaskLog(scheduledTaskLog);
	}

	/**
	* 修改保存定时任务记录
	*
	* @param scheduledTaskLog 实体对象
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:update')")
	@ApiOperation("修改保存定时任务记录")
	@PostMapping("/updateScheduledTaskLog")
	public ScheduledTaskLog updateScheduledTaskLog(@RequestBody ScheduledTaskLog scheduledTaskLog){
		return this.scheduledTaskLogService.updateScheduledTaskLog(scheduledTaskLog);
	}

	/**
	* 根据ID删除定时任务记录
	*
	* @param scheduledTaskLogId ID
	*/
	@PreAuthorize("hasAuthority('system:scheduledTask:ScheduledTaskLog:remove')")
	@ApiOperation("根据ID删除定时任务记录")
	@PostMapping("/deleteScheduledTaskLog")
	public void deleteScheduledTaskLog(@RequestParam Long scheduledTaskLogId){
		this.scheduledTaskLogService.deleteScheduledTaskLog(scheduledTaskLogId);
	}



}

